System for tracking activity and delivery of advertising over a file network

ABSTRACT

In a system for tracking activity and delivering advertising over a computer network, the popularity of electronic files is tracked utilizing a plug-in to a system or network, in particular, a file-trading or peer-to peer network. Once the statistical data are obtained, they are stored in a database, and can then be retrieved and compiled and summarized in textual or graphical format. Additionally, incoming file requests to the system are intercepted and demographically appropriate advertising is sent to the requester.

[0001] This application claims the benefit of U.S. Provisional Application Serial No. 60/369,038 filed Mar. 27, 2002, which is hereby incorporated by reference as if fully set forth herein.

FIELD OF THE INVENTION

[0002] The present invention relates to computer networks. More particularly, this invention pertains to a system for tracking activity and delivering advertising over a computer network.

BRIEF DESCRIPTION OF THE DRAWINGS

[0003]FIG. 1 is a basic block diagram of the system of the invention engaged to a file trading/sharing network;

[0004]FIG. 2 is a detailed block diagram of the collection system of the invention;

[0005]FIG. 3 is a detailed block diagram of the data retrieval module of the invention;

[0006]FIG. 4 is a detailed diagram for illustrating the data mining process of a system in accordance with the invention;

[0007]FIG. 5 is a detailed diagram of the application layer portion of the data mining process of the preceding figure; and

[0008]FIG. 6 is a detailed diagram of the protocol communication layer of the data mining process of FIG. 4.

A BRIEF DESCRIPTION OF THE GTM SYSTEM

[0009] A method and apparatus for tracking activity and delivering advertising over a computer network, in particular; music, movies and software, over peer-to-peer networks and Napster like networks. A method and apparatus for the dissemination of promotional content via the fulfillment of an electronic file request over peer-to-peer or Napster like networks. A database containing information regarding the popularity of traded electronic files throughout the network (Internet).

[0010] Abstract

[0011] A preferred embodiment of the invention provides a tracking method (and corresponding apparatus) for monitoring the trading of electronic files via the file trading and peer-to-peer networks, including but not limited to Napster like networks.

[0012] A preferred embodiment of the invention provides a method and apparatus for tracking decentralized networks such as peer-to-peer networks based on their specific protocols utilizing a plug-in to the system. In accordance with a preferred embodiment, the application plug-in is used with the application to make the determination of a particular file's popularity and/or number of users who have downloaded a particular file that has been traded over a computer network. Tracking the transfer of electronic files over a file-trading network is accomplished by introducing a polymorphic behavioral protocol into the current protocol stack of the target file-trading network.

[0013] A preferred embodiment of the invention provides a method and corresponding apparatus for creating a database to be used as a recommendation engine for industries including but not limited to the software industry, movies industry, recording industries and/or copyright holders in general who have a vested interest in analysis of this metadata. The data can then be separated by desired categories and displayed via a computer terminal or website for analysis. A preferred embodiment of the invention provides a method and corresponding apparatus for delivering advertising over a computer network. This is accomplished by the interception of incoming file requests and the subsequent fulfillment of said requests by the substitution of demographicaly appropiate advertising. At critical mass the GTM system's peer to peer module achieves “Super-node” status which positions itself at the core of the target network.

[0014] History of the Invention

[0015] Incorporated in May 1999, the Napster file-trading network marked a new era—unrestricted large scale file trading over the Internet.

[0016] As an example, prior to Napster the recording industry collectively, had been able to fully control the propagation of music and the collection of revenues generated by its propagation. The introduction of the Napster software allowed computer users across the world to copy music—be it copyrighted or not—to their hard drives and then trade that music with any other member of the Napster community. This unfettered trading alarmed the recording industry greatly, which saw it as theft of copyrighted material that previously had only been available to consumers via over-the-counter purchase. The estimated revenue losses were several billion dollars, based on peak Napster membership of 80 million registered users (May 2001) and an estimated peak of 2.8 billion song files traded per month using the Napster software.

[0017] Legal moves by the recording industry ultimately succeeded in silencing Napster but once a technology is developed there is no going back. Other Napster-like file-trading networks were established, and new technology was developed which deviated from the centralized network model utilized by Napster. Instead of linking via a central host, users are connected in a loosely-distributed peer-to-peer network with their computers acting as ‘servlets’, serving up files stored on their hard drives to any other user requesting that file, and also acting as a client to request and download files stored on other peers within the network. Gnutella is the most prominent example of this, boasting a vast collection of applications that execute in Win32 and Unix environments, allowing the trading of many different forms of copyrighted material including but not limited to music, movies and software.

[0018] These industries are facing continued escalation in the number of file-trading networks and the number of users of those networks, and are prior to this invention, popularity of music has been made available only in publications such as Billboard Magazine which the music industry has relied on greatly and Variety Magazine which has been one of the ground distributed publication for the motion picture industry. In the software distribution environment there is no current standard venue for the publication of popularity of unauthorized trades of software. Therefore the need exists for a venue of presentation to make the data available to all the industries affected by the continued escalation of this file-trading phenomenon. Furthermore, the recording industry and other affected industries who collectively suffer from the mass dissemination of what had been “controlled assets” continue to seek relief or to attach revenue to mitigate their losses. By returning a commercial advertisement to fulfill a request that would have been fulfilled with an unauthorized electronic file, promotion takes the place of lost revenue. The system of the invention also makes use of it's resources to act as a filter and a countermeasure to a party seeking to slow down the unauthorized trading of these files by “out-trading” the traders. By flooding the known propagation channels with substitutions for requested content, one could suggest that a record label, for example, could be free to promote their artists new record for a limited period of time. Simply put, these industries need this data and it is not available in the prior art. The system of the invention provides a delivery chain and a venue for the dissemination of advertisement via an electronic file. What is unique and important to mention, is not that an advertisement is propagated on the computer network, but the unique way that it is delivered. The development of Internet-based file trading has had additional impact on industries that are based on ‘traditional’ retail sales beyond the loss of revenue and its effect on capital availability for future products. An example of these consequences is the deprivation of indices by demographic or popularity.

[0019] These industries have traditionally required marketing and promotion in order to achieve revenue targets and maximize market penetration, but the presently anonymous nature of file trading makes unavailable to the relevant industries of the necessary information to create and implement strategies to sell their products. Not only do they need to secure lost revenue, they need to reach the file traders in order to market their products, as well as to complete the demographic picture of who their would-be customers are and what products would appeal to them. While securing revenues from Internet-based file trading is the first step, it is only the first step in managing this new method of product distribution and promotion, which will only continue to increase its market share over the years to come.

[0020] Prior Technology

[0021] A description of the prior art relates directly to the trading of electronic files on a computer network. More specifically, the trading of electronic files via file-sharing networks and/or peer-too-peer networks. A description of the prior art relates directly to the propagation of advertising via an electronic file over a computer network, more specifically the network known as the Internet. The system of the invention relates directly to centralized and decentralized file-trading networks. This invention relates directly to the trading of electronic files over a computer network, commonly referred to as “file-trading” or “peer-to-peer” networks. The system of the invention is therefore the only known art at this time.

[0022] Deficiency in Prior Technology

[0023] A deficiency in the prior art relates to the need to provide statistical data tracking and analysis for the motion picture, music and software industries who are affected by the mass dissemination or “digital cloning” or propagation of electronic files that are being traded over a computer network. A deficiency in the prior art is the need for statistical data tracking and analysis with the intent to provide a method and corresponding apparatus to provide a determination of royalties that may be due based on the outcome of litigation that may or may not have authority in a given jurisdiction. At this time, the system of the invention could provide a solution providing the work product of the system of the invention were to be certified in that jurisdiction by an authority in that jurisdiction. A deficiency in the prior art is that at this time there is no known method for certification or proof of propagation to show copyright infringement.

[0024] System of the Invention (Description of Diagram 1)

[0025] Centralized File Trading Network

[0026] Description

[0027] A target segment and the source of the data for the system of the invention. A “pivot-point” where the peer is connected to other peers. Some of the properties include, but are not limited to:

[0028] Specific files, such as (music, movies, applications).

[0029] Detailed information on certain internet properties, such as IP address and name registered at ARIN Whois in certain instances.

[0030] Geographical location. The geographical location can be determined when a static IP address is used to connect to the computer network In some instances a dynamic IP address can also be geographically determined if reverse authority has been given or if the carrier (upstream) has registered that information.

[0031] Actual content (e.g. Music, applications, movies, text)

[0032] Peer-to-Peer File Trading Network

[0033] Description

[0034] Another target segment and source of the data for the system of the invention. Some of the properties include, but are not limited to:

[0035] Specific files, such as (music, movies, applications).

[0036] Detailed information on certain Internet properties, such as IP address and name registered at ARIN Whois in certain instances.

[0037] Geographical location. The geographical location can be determined when a static IP address is used to connect to the computer network. In some instances a dynamic IP address can also be geographically determined if reverse authority has been given or if the carrier (upstream) has registered that information.

[0038] Actual content (e.g. Music, applications, movies, text)

[0039] Centralized Data Collection Module

[0040] Function

[0041] The primary function of the centralized network data collection module is to collect metadata from the centralized file-sharing networks associated with the system of the invention.

[0042] The Metadata Storage module ingests data from the STL process and does further processing and preparation of the data to assure its conformance to the database schema. Prior to insertion into the database, the data is combined with SQL (Structured Query Language) statements in order to facilitate the data's storage into the database. The formed SQL statements is then passed to a DBAPI (Database Application Programming Interface), in which the database record is then committed to the database.

[0043] Webserver

[0044] Function

[0045] The Presentation module culminates in a subscription based website where participating companies in the aforementioned industries can access the statistical analysis of the data made available by the system of the invention.

[0046] Description

[0047] The Presentation module uses a webserver connected to a computer network on http port 80 and secured with .htaccess which is a webserver software security module to protect from unauthorized access. The data is displayed using a java applet taking its input via a CGI (Common Gateway Interface) program with embedded SQL queries (Structured Query Language) to make its DB (database) calls. Final presentation of the data from the system of the invention combines statistical data from the Report Generation module with data from the Graphing and Trending module into a format compliant with the display medium (e.g. html, spreadsheet etc.). The results are then presented to the end user.

[0048] Advertising Media Data

[0049] Function

[0050] The Advertising Media Data module facilitates the storage of the advertising content into a storage medium.

[0051] Description

[0052] The Advertising Media Data module utilizes a database and schema to store the advertising content metadata and assign a global system identification number to each electronic file. When a user requests a file from the “supernode” the configuration gives the administrator of the system of the invention the option to define a “GDR” (Genre Demographic Radius). The GDR, simply put, takes a request and matches it with a number of artist permutations, which based on Boolean logic (true/false), returns a suggested advertisement that based on the system of the invention configurations falls within the parameters of the GDR

[0053] Data Retrieval

[0054] Function

[0055] The Data Retrieval module facilitates the compilation, summation and organization of metadata residing in the GTM database, based upon user requests or queries for certain information.

[0056] Description

[0057] The Data Retrieval module utilizes embedded SQL queries within the subroutine to retrieve metadata to be parsed by a series of filters. User input can come from a terminal, a Unix based PoS (Point of Sale) terminal, a limited ANSI GUI, Win32 application or via the Presentation module (subscription based website). The system of the invention, based on configuration, can make use of caching servers to insulate the actual database from the outside world (the Internet) and/or provide a third level of fault tolerance.

[0058] Report Generation

[0059] Function

[0060] The Report Generation module takes the metadata from the target file-trading network by the Data Retrieval module and delivers the formatted metadata in textual form.

[0061] Description

[0062] The Report Generation module parses the data acquired by the Data Retrieval module and generates summarized, tabulated and formatted reports based on user submitted criteria. Example reports that are generated are as follows:

[0063] Number of queries per title per a specified period of time.

[0064] Queries for a specified electronic file that has been traded.

[0065] Amount of queries for a specified electronic file.

[0066] Number of queries specified by geographical location.

[0067] Number of searches specified by genre for a particular electronic file that has been traded on a computer network.

[0068] Geographical dispersion of searches for a particular electronic file.

[0069] Geographical dispersion of searches for a particular genre.

[0070] Genre dispersion of electronic file title permutations.

[0071] Demographical dispersion of electronic file title permutations.

[0072] Searches for an electronic file using a global system identification number.

[0073] Yes or No, has an electronic file been traded?

[0074] Graphic Generation

[0075] Function

[0076] The Graphic Generation module takes statistical data from the Data Retrieval module and generates a graphical representation of the data.

[0077] Description

[0078] The Graphic Generation module takes statistical data and generates graphical representations of that data in the form of a graph or chart. The graphical components are public assets that can be accessed via the Presentation module or Win32 module or PoS module and are made available to the caching server module if implemented. Flexibility is provided not by a concrete class, but by a java interface. The Graphic Generation module is responsible for generating graphics in the form of JPEG and GIF formats.

[0079] Collection System

[0080] Data Collection Plug-in

[0081] Function

[0082] The Data Collection plug-in is the interface between the core software and the File Trading network. This plug-in handles all communication(s) with the target network(s) needed to accumulate the file trading metadata for the system of the invention. Since various file-trading networks may utilize different protocols, the architecture component described here is based on a per-network “plug-in” to the system of the invention. Tailored for use on each specific computer network, the “plug-in” style architecture of the system of the invention establishes that there can be one system for all target computer networks.

[0083] Description

[0084] Authentication

[0085] The authentication module initiates the connection to the target file-trading computer network based on available authentication protocols, and then makes available the open connection as a “FILE_HANDLE” to the “Session Handler” once a “handshake” with the target computer network is completed.

[0086] Session Handler

[0087] The Session Handler, simply put, handles the setup and teardown of connections (forking is included) between the Data Collection module and the target file-trading computer network. The Session Handler is where multiple instances of the process of the system of the invention are created and/or terminated by a “KILL” or “OR_DIE” statement.

[0088] Data Collection

[0089] The Data Collection module receives the search criteria from the database. By making a query to the database for a random file title for example, “The Beatles”, a list of computer users local to that target file-trading computer network who have that file, would be returned to the Data Collection module and stored in the heap as an array, then individual variables can be created from the computer users who make up that string literal and a random and a songlist is compiled based on the total number of songs of the total number of users who have those file titles and the process begins again.

[0090] Parsing Module

[0091] The Parsing module is a “quick check” for subversive content, such as “buffer overflow”, permutative file titles and/or file extensions that are not of interest to the system administrator of the system of the invention. Qualification before presentation to the schema should prevent “bottle-necking” or overload of a module. The Parsing module loads the users playlist into the heap by loading it as a “FILE_HANDLE” where it is checked by Boolean logic for database schema compliance.

[0092] Core Module

[0093] Function

[0094] The Core Module encompasses all the data collection functionality of the system of the invention that is not platform, database or network specific.

[0095] Description

[0096] Format Processor

[0097] The Format Processor module receives parsed metadata from the Parsing module and loads it as a variable so it can be checked by algorithm for integrity. The Format Processor module of the system of the invention then passes metadata in the form of geographic or demographic relations to optimize operations and to use disk space effectively.

[0098] Storage Module

[0099] The Storage module takes advertising content from PoS terminals/kiosks Win32 apps and/or the presentation module to the database via its own database schema. The Storage module assigns the following attributes to the advertising content:

[0100] Global system identification number.

[0101] Location.

[0102] Global system identification number for file type.

[0103] Content description.

[0104] These attributes are passed on as advertising content metadata to the database layer and the database.

[0105] Database Layer

[0106] Function

[0107] The Database layer takes the SQL statements generated the appropriate modules and generates the necessary lower level system calls to commit the data into the database.

[0108] Description

[0109] The Database Layer utilizes a DBAPI (database application programming interface) to communicate with the database engine. The Database layer handles the following tasks:

[0110] Initiation of connection to database engine.

[0111] Database authentication and login.

[0112] Session management.

[0113] Communication of SQL statements to database engine.

[0114] Passing of result sets from queries back to the appropriate requesting module(s).

[0115] Error reporting on status of database transactions back to the requesting module(s).

[0116] The DBAPI provides a programmatic interface to the lower level protocols required to communicate with the database engine. These interfaces are database engine dependent, so the DBAPI utilized is for the specific database engine used (e g. Oracle 9i, Sybase, MySQL, MSQL, etc.).

[0117] Storage Layer

[0118] Function

[0119] The Storage Layer is a programmatic interface to the Data Warehouse.

[0120] Description

[0121] The Storage Layer creates a programmatic interface to facilitate the storage and retrieval of advertising assets from the advertising content database utilizing the appropriate network protocols to facilitate the transfer of assets without error. The Storage Layer performs the following tasks:

[0122] Initiation and termination of socket connections to the advertising content database.

[0123] Authentication and login (if required by a particular file transfer protocol).

[0124] Managing source/destination of asset to be stored/retrieved.

[0125] Asset transfer verification.

[0126] Transfer completion acknowledgment to invoking module.

[0127] Removal of assets as required.

[0128] The Storage Layer utilizes different network and transport protocols (e.g. NFS, FTP SFTP, RCP, etc.) dependent upon the requirements of a particular deployment configuration.

[0129] Data Retrieval

[0130] GTM Database

[0131] Function

[0132] The system of the invention stores information on computer network properties, more specifically information about the trading of electronic files over a computer network.

[0133] Description

[0134] The Database contains the metadata acquired by the Data Collection and Content Acquisition processes, including but not limited to:

[0135] Logged searches

[0136] Logged permutations

[0137] IP address (when available)

[0138] Logged asset locations

[0139] Content ID's

[0140] Defined content types

[0141] The data stored in the system of the invention's Database is accessed through the Database Layer.

[0142] Database Layer

[0143] Function

[0144] The Database layer takes the SQL statements generated the appropriate modules and generates the necessary lower level system calls to commit the data into the database.

[0145] Description

[0146] The Database Layer utilizes a DBAPI (database application programming interface) to communicate with the database engine. The Database layer handles the following tasks:

[0147] Initiation of connection to database engine.

[0148] Database authentication and login.

[0149] Session management.

[0150] Communication of SQL statements to database engine.

[0151] Passing of result sets from queries back to the appropriate requesting module(s).

[0152] Error reporting on status of database transactions back to the requesting module(s).

[0153] The DBAPI provides a programmatic interface to the lower level protocols required to communicate with the database engine. These interfaces are database engine dependent, so the DBAPI utilized is for the specific database engine used (e.g. Oracle 9i, Sybase, MySQL, MSQL, etc.).

[0154] Subscription Website

[0155] Function

[0156] The Subscription Website module of the system of the invention is where the end user of the system of the invention can log-in with a username and password to generate charts or lists based on his/her specific needs for information on file-trading on the computer file-trading networks. The data is made available via the Database Layer.

[0157] Description

[0158] The Subscription Website database provides data to the end user like:

[0159] File trader usernames

[0160] File trader playlists

[0161] File trader geographical location

[0162] Demographic breakdown by genre

[0163] Subscription expiration date

[0164] Subset criteria

[0165] Global system identification number

[0166] The subscriber username and encrypted password are utilized for authentication to the Data Retrieval module.

[0167] User Verification

[0168] Function

[0169] The User Verification module handles authentication of the end user to the DRS of the system of the invention.

[0170] Description

[0171] The User Verification module retrieves from the subscriber their subscription credentials via the User Input component over a secure transport mechanism (e.g. SSL). The User Verification component then checks the information against predefined subsets stored in the Subscriber Database. If the credentials received match the ones stored, the subscriber is then considered authenticated. A successful authentication attempt causes a notification to be sent to the Subscription and Limit Verification component and further processing of end customer input continues.

[0172] Subscription and Limit Verification

[0173] Function

[0174] The Subscription and Limit Verification module checks and enforces subscription limits imposed upon subscribers and is commonly referred to as a “kill ring”.

[0175] Description

[0176] The Subscription and Limit Verification module communicates with the Subscriber Database through the Database Layer. After the subscriber has been authenticated and verified through the User Verification module, the subscription status is then checked against the Subscriber database. If the subscription has not expired, or has not reached other defined usage-based limits, then the subscriber is allowed to continue with the querying process. If the subscription is limited to a specific type of query or limited to a specific subset of metadata, then those constraints are passed to the Query Engine.

[0177] Query Engine

[0178] Function

[0179] The Query Engine component facilitates the creation of an SQL query within the defined constraints to be submitted to the Query Processor.

[0180] Description

[0181] The Query Engine processes user input and subscription limit parameters to generate a valid query against the metadata in the GTM database. The resulting query is then formatted into an SQL query statement that is subsequently passed on to the Query Processor.

[0182] Query Processor

[0183] Function

[0184] The Query Processor module of the system of the invention processes the SQL statement generated by the Query Engine.

[0185] Description

[0186] The Query Processor receives an SQL statement from the Query Engine and then submits the query to the Database Engine through the Database Layer. The result subset(s) returned by the Database Engine are then passed on to the Report and Graphing Generation modules of the system of the invention.

[0187] Report Generation

[0188] Function

[0189] The Report Generation module takes the data passed to it from the Query Processor and generates textual reports based upon said data.

[0190] Description

[0191] The Report Generation module processes the data passed to it from the Query Processor and consolidates, summarizes and formats the data into a textual “report” for further processing by the Trending and Graph Generator and/or the Presentation Processor. These reports are generated from predefined and/or end customer specified templates.

[0192] Graphic Generation

[0193] Function

[0194] The Graphic Generation module creates graphical representations of result sets passed to it from the Query Processor.

[0195] Description

[0196] The Graphic Generation module takes statistical and absolute information in textual form from the Report Generation module and generates graphical representations of said statistics. The information is then parsed and passed on to a graphics library (e.g. MRTG) to be rendered into a single or multiple images (e.g. jpeg, gif) as required.

[0197] Presentation Module

[0198] Function

[0199] The Presentation module of the system of the invention takes processed metadata from the Report and Graphic Generation modules and processes the data into a presentable form.

[0200] Description

[0201] The Presentation Module takes graphs and reports and combines them into a final formatted form based on predefined and/or end customer specified templates and the final medium for delivery (eg. HTML, spreadsheet, etc.). The resultant data is then passed on to the Web Server for delivery to the end customer.

[0202] User Input

[0203] Function

[0204] The User Input component functions as the method to acquire input from the end customer and pass said input to other components as required.

[0205] Description

[0206] The User Input component querys the end customer, intakes end customer input, checks for validity, formats and then passes said input on to the calling component.

[0207] Web Server

[0208] Function

[0209] The Web Server functions as the method of communication to receive input and deliver output to/from the end customer.

[0210] Description

[0211] The Web Server handles all communication with the end user utilizing the HTTP (Hypertext Transfer Protocol) over the Internet.

[0212] Future Software Architecture

[0213] In an effort to provide a flexible and easily maintainable implementation, the architecture is split into several layers as opposed to being monolithic. This approach provides modularity of components greatly reducing development time, effort and cost for future revisions.

[0214] The implementation's modular design provides flexibility for the addition of new functionality and support of new networks and their protocols as they emerge. All that is required to add support for a new file-trading network and its associated protocols is the development of a new protocol handler that is then “plugged-in” to the existing component framework. This approach enables the GTM system's functionality to be expanded quickly and easily to meet changing requirements.

[0215] The GTM system implementation uses the ACE C++ classes and frameworks for efficient event demultiplexing and method dispatching. The implementation utilizes various design patterns to decouple pieces of software to allow easy reuse of existing components.

[0216] The Reactor and Connector framework from the ACE C++ toolkit provides us with tested and robust event handling. The Reactor framework allows the registration of concrete event handlers and the invocation of their respective methods when events are sent to the Reactor. The Reactor framework then demultiplexes the actual event handling logic from the logic associated with handling a particular event.

[0217] The Connector framework decouples peer initialization from the action associated once the peer has successfully connected. This gives us great flexibility in choosing a particular connection strategy for differing network requirements.

[0218] The Future Framework Layer

[0219] The framework provides an “inversion of control”, otherwise known as the Hollywood principle—“don't call us, we'll call you.” This layer allows defined, concrete classes to be registered, and to be sent notifications when certain events of interest occur (Diagram 4).

[0220] The Connector framework is responsible for creating, activating and connecting the GTM_Session to the particular remote host. If we issue an asynchronous connection using non-blocking I/O, our connect() call returns immediately, and once the connection has completed, a notification is received.

[0221] The Reactor framework allows a concrete class of Event_Handler hierarchy to register with a Reactor, and wait for events such as input, or output to occur. When such an event is triggered, GTM_Session receives a notification and forwards that notification via its Implementation pointer. The Implementation pointer points to a certain concrete class tailored for the specific protocol. This layer allows the implementation to be extremely flexible when designing strategies for connection establishment (synchronous/asynchronous), and event notification and handling:

[0222] The Future Application Layer

[0223] We create concrete class GTM_Session that receives callbacks from the Framework Layer (Diagram 5) upon the arrival of certain events such as I/O, Timer, Signal, etc.

[0224] To ensure flexibility and easy integration of new file trading networks into the architecture. The GTM_Session maintains a pointer to the actual Implementation of a particular session. That Implementation is for a Napster network, a Gnutella network, Music City, or other existing or emerging networks.

[0225] By maintaining two class hierarchies, those that are derived on the GTM_Session, and those that are derived from the GTM_Session_Impl allows the incorporation of new and evolving file trading service networks as “plug-ins” either statically at compile time or dynamically at runtime.

[0226] Peer-to-Peer Protocol Handler Implementation

[0227] Peer-to-Peer Protocol Specifications

[0228] A Peer-to-peer network consists of “nodes” in which connected peers act as both a client, and a server called a “servant”. For a partial list of networks, servants and clients, see Addendum A. In order to connect to a network, an IP address of any host that is currency connected to the network must be obtained.

[0229] Once a servant has successfully connected to the network, it acts as a server (to satisfy requests), and a client (to make requests). If the servant receives a search query, and wishes to fulfill it, it sends a packet indicating that it has the requested data, at which point the peer transfers the data over HTTP port 80. The servant also queries for specific content, or pass requests over to another sever.

[0230] Peer-to-Peer Plug-in Protocol Handler Implementation

[0231] A Peer-to-peer protocol handler class Handler_Impl implements various functionality dealing with the specific nature of this protocol, in this case a loosely distributed peer-to-peer protocol (Diagram 6). We first need to obtain an IP address of a host currently residing on the network. Upon the initial connection handshake, the connected peer states its inability to service our connection, or allows a connection to it.

[0232] Upon a successful connection the system of the invention is able to watch search requests in real-time, since they are passed on to the system from other peers. The routing of packets is done using a TTL (Time To Live) parameter. Once a packet is passed on from one peer to another, the TTL field is decremented to ensure packets are expired on the network. Thus, this loose distributed architecture allows the system of the invention to act as a listener for requests made within its TTL radius. The system then listens for search requests, and the connection of new hosts to which it can connect. Upon getting a search request, the system logs into the GTM database, using a transparent thin DB (Database) API (Application Programmers Interface).

[0233] Middle Tier Software (Core)

[0234] The middle tier software is responsible for taking the fetched data, optionally converting it into another format and storing it. Since data from multiple “collectors” need to be processed and stored by the core software and hardware, performance and the minimization of overhead is important to insure that the data will flow unimpeded.

[0235] The system of the invention utilizes a thin DBI API for:

[0236] Encapsulations of requests

[0237] Encapsulations of responses

[0238] Error handling

[0239] The advantages of using an interface are uniformity and flexibility and that different database engines are loaded at runtime, as opposed to just compile time. We are initially using the MySQL database engine for storage of the metadata. MySQL is an open source licensed SQL compliant database package. At this writing, MySQL supports a full subset of the SQL92 spec, with very limited support for sub queries, and no support for transactions and rollbacks. However, it is still an extremely capable engine and is more than suitable for our needs.

[0240] Database SQL Schemas

[0241] Design of an efficient schema is crucial for data warehousing and statistical analysis. The schema contains the following tables:

[0242] ContentTable

[0243] ContentID

[0244] Type

[0245] Size

[0246] UserTable

[0247] UserID

[0248] IP

[0249] Handle

[0250] The Oracle Database

[0251] The GTM system uses Oracle 9i information server as the database engine. Oracle was chosen for its unmatched performance on the Solaris 2.x platform

[0252] Sun Microsystems F6800 Database Server

[0253] Sun Microsystems™ hardware was chosen because of its flexibility, scalability and because of the unique features of the Sun F6800 server, including the support of logical partitions (multiple virtual domains) that enable multiple instances of the operating system and applications to run on the same physical platform. This enables process and OS fault tolerance.

[0254] EMC Storage Server

[0255] The EMC storage server provides solid reliability and impressive fault tolerance. It supports Raid 0,1,5,0+1, etc., and represents a storage environment of 100TB when configured in the maximum configuration. EMC provides excellent 24×7 “lights out” monitoring and on site service, and their technicians are dispatched to remedy any problems, most of the time before the customer perceives any symptoms or experiences any problem

[0256] Glossary

[0257] ACE C++ class—a class in the ACE C++ toolkit

[0258] ACE C++ framework—a group of classes within the ACE C++ toolkit for event handling

[0259] ACE C++ toolkit—a group of utility classes and templates that can be used as a framework to recreate applications

[0260] ACE message block—a block of data used to pass event data within the ACE C++ framework

[0261] ASCII character—a standardized method to represent written characters within an application

[0262] concurrency framework—a framework enabling the concurrent execution of multiple functions

[0263] connector framework—a framework for establishing, maintaining and disconnecting network connections

[0264] crawling—the process of traversing a network to collect data

[0265] data mining—the process of extracting specific data from a larger collection of data

[0266] data warehouse—the repository for all data collected

[0267] database engine—an instance of a relational database application (qv)

[0268] database schema—a structure defining the method storing data and their relationships in a relational database

[0269] DBI API—Database Interface Application Programming Interface

[0270] event demultiplexing—the process of extracting a single event from an event message

[0271] HTTP port 80—the specific port used for the hypertext transfer protocol

[0272] implementation pointer—a pointer to a particular implementation of a class

[0273] IO handler—a subroutine for handling input and output operations

[0274] IP address—a string of numbers used to address computers on the Internet

[0275] ISO character entries—international standards organization

[0276] magic number—a file identifier to indicate file type

[0277] MD5 checksum—a 128-bit fingerprint to verify the integrity of a file

[0278] metadata—a subset of data which describes a larger set of data

[0279] method dispatching—the process of invoking subroutines

[0280] non-blocking I/O—a method of forming input/output operations asynchronously

[0281] OSI protocol stack—a standard representation of network layers

[0282] packet—a small piece of information

[0283] plug-in—an interchangeable subroutine

[0284] programmatic interface—a method to interface to an application via computer programming language

[0285] reactor framework—an event handling framework from the ACE C++ toolkit

[0286] recommendation engine—a means of establishing appropriate alternatives to a request for a file

[0287] relational database—an application for the storage and management of data utilizing relationships for retrieval

[0288] rollback—the process of removing recently committed data from a relational database

[0289] SAP—service access point. The location and method in which an application connects to a network

[0290] SQL 92—a standard for the syntax of Structured Query Language

[0291] SQL query—a query written in Structured Query Language

[0292] subset criteria—The criteria which governs the scope of data that can be retrieved from a database

[0293] TCP sockets—a connection-based IP protocol (transport control protocol)

[0294] transaction—a group of SQL statements

[0295] TTL field—time to live (the maximum number of hops that a packet of data will make)

[0296] UDP sockets—a connectionless-based IP protocol (user datagram protocol)

[0297] Addendum A

[0298] File Sharing Networks

[0299] Audio Galaxy

[0300] Both software (satellite) to search user collections at their own machines and a web based search through user's personal online collections, which resides on the Audio Galaxy servers.

[0301] Platforms: Windows 95/98/ME, Windows NT, Windows 2000, Linux, Macintosh, Web-based

[0302] Blubster

[0303] Blubster is a peer-to-peer network with a new private protocol that works without a central server. Once the user's client program connects with another client they're able to search and download Mp3 music files from the entire network of users. The first version features an easy to use interface enabling quick searches, fast downloads and cache files at several sources.

[0304] Platforms: Windows 95/98/ME, Windows NT, Windows 2000, Unix

[0305] BuddyShare

[0306] Has its own network, offers the ability to resume downloads and has an integrated chat client.

[0307] Platforms: Windows 95/98/ME, Windows NT, Windows 2000

[0308] Carracho

[0309] The Carracho Client enables users to use the services provided by a Carracho Server. Once connected to a server, users can meet new friends in chat rooms, discuss ideas in newsgroups and simultaneously download the latest updates for software without switching between different applications. All useful features from IRC, FTP and Usenet programs like multi-threaded news, real-time conferences, moderated chat rooms, drag-n-drop file upload/download etc. are integrated. Additionally Carracho Client allows users to resume downloads, send private personal messages and access all functions needed by server administrators from a single window.

[0310] Platforms: Macintosh, other platforms planned

[0311] Direct Connect

[0312] Direct Connect allows users to share multiple directories from their local and mapped disks with other users over a TCP/IP network. All users' shared files are available to all other users; no passwords are required. Direct Connect provides integrated searching, graphical navigation of files, and public and private chatting.

[0313] Platforms: Windows 95/98/ME, Windows NT, Windows 2000

[0314] eDonkey 2000

[0315] eDonkey 2000 is a multi platform file sharing tool with its own network. It can find any type of file; resume downloads, and gets one file from different sources simultaneously and has many more advanced features.

[0316] Platforms: Windows 95/98/ME, Windows NT, Windows 2000, Linux, Macintosh

[0317] File Rogue

[0318] File Rogue allows users to create a personal “Catalogue” of files that they wish to share with other members of the File Rogue Community. This list is uploaded to the “Global Catalogue” on the File Rogue Server whenever they launch the application. Users then can perform searches of the Global Catalogue, or browse through categories, and select the files they wish to download.

[0319] Platforms: Windows 95/98/ME, Windows NT, Windows 2000, Linux, Unix, Macintosh

[0320] Filemaze

[0321] Filemaze Direct Downloads is a free file-sharing network. It allows users to share their files with other people and search then download files that others on the network are sharing.

[0322] Platforms: Windows 95/98/ME, Windows NT, Windows 2000, Unix

[0323] File Spree

[0324] The purpose of File Spree is to swap files, using a secured method and without using blind links, advertisements, or having to search a million web sites just for one thing. The network of servers is totally decentralized, requiring users to host the servers, which allows for faster connections, downloads, and easier access to files.

[0325] Platforms: Windows 95/98/ME, Windows NT, Windows 2000, Unix

[0326] Filetopia

[0327] Another tool with it's own sharing networks but offering good security and levels of sharing. Has integrated email and instant messaging.

[0328] Platforms: Windows 95/98/ME, Windows NT

[0329] Flipr

[0330] FLIPR is peer-to-peer file-sharing software that provides quality digital music files while accurately compensating copyright holders.

[0331] Platforms: Windows 95/98/ME, Windows NT, Windows 2000, Unix, Macintosh

[0332] Freenet

[0333] Freenet is a large-scale peer-to-peer network which pools the power of member computers around the world to create a massive virtual information store open to anyone to freely publish or view information of all kinds.

[0334] Platforms: Windows 95/98/ME, Windows NT, Windows 2000, Linux, Unix

[0335] Gnutella

[0336] Peer-to-peer client software based on the original Gnutella client written by Winamp's Justin Frankel.

[0337] Platforms: Windows 95/98/ME, Windows NT, Windows 2000, Linux, Unix, FreeBSD, Macintosh, Java

[0338] Gnutmeg

[0339] Gnutmeg is a peer-to-peer distributed file sharing system not unlike Gnutella. It is similar to Napster, but there is no central server. The reference implementation is in Java 1.1 and has a simple command line interface, and uses regular expressions.

[0340] Platforms: Unix, Java

[0341] Heavy Mole

[0342] Heavy Mole is a file-sharing tool that takes the best features from Gnutella, Napster and Hotline and puts it in one package.

[0343] Platforms: Linux, Unix

[0344] Hotline

[0345] Hotline Connect is a suite of two free applications that enables Internet users to communicate and share files and information. Hotline Connect enables users to easily create a personal interactive Internet community with real time chat, conferencing, messaging, data warehousing, file transfer and streaming capabilities.

[0346] Platforms: Windows 95/98/ME, Windows NT, Windows 2000, Unix, Macintosh

[0347] iMesh

[0348] iMesh is another file sharing tool with its own sharing network. They offer many features including animated skins.

[0349] Platforms: Windows 95/98/ME, Windows NT, Windows 2000

[0350] INoize

[0351] INoize is music sharing software with its own network that organizes files by artist, Album and Title.

[0352] Platforms: Windows 95/98/ME, Windows NT, Windows 2000, Linux

[0353] Jungle Monkey

[0354] Jungle Monkey is a channel-based file-sharing tool for Unix with integrated chat functionality utilizing its own network/protocol.

[0355] Platforms: Unix, Windows client in development

[0356] KaZaa Media Desktop

[0357] KaZaa is another all-format peer-to-peer file sharing tool with all the usual features and its own network.

[0358] Platforms: Windows 95/98/ME, Windows NT, Windows 2000, Web-based

[0359] Konspire

[0360] Konspire is a Java-based file shareing tool with its own network.

[0361] Platforms: Java

[0362] OpenNap

[0363] OpenNap extends the Napster protocol to allow sharing of any media type, and the ability to link servers together. Many clients support this protocol.

[0364] Mojo Nation

[0365] Mojo Nation combines the flexibility of the marketplace with a secure “swarm distribution” mechanism to go far beyond any current file shareing system by providing high-speed downloads that run from multiple peers in parallel. The Mojo Nation technology is an efficient, massively scalable and secure toolkit for distributors and consumers of digital content.

[0366] Platforms: Windows 95/98/ME, Windows NT, Windows 2000, Linux, FreeBSD

[0367] Morpheus

[0368] Morpheus is a full-featured P2P file-sharing application that allows users to search for all types of digital media across the MusicCity Network. Morpheus is neither central server-based, like-Napster, nor based on the Gnutella file-sharing protocol. The program uses a proprietary peer-to-peer protocol to share files among users on the network.

[0369] Platforms: Windows 95/98/ME, Windows NT, Windows 2000, Unix

[0370] Mp3 Startpagina

[0371] A Dutch portal with multiple mp3 resources.

[0372] Platforms: Web-based

[0373] MP3 World

[0374] This is another Dutch mp3 portal.

[0375] Platforms: Web-based

[0376] MP3.com

[0377] One of the most complete mp3 portals, which also offers free mp3 music by mostly unknown artists.

[0378] Platforms: Web-based

[0379] Openblue Fileshare

[0380] Openblue Fileshare is another Java-based tool with its own network.

[0381] Platforms: Java

[0382] OutLoud.nl

[0383] A Dutch community/news style website that offers a number of free mp3's, mostly unknown artists.

[0384] Platforms: Web-based

[0385] RiffShare

[0386] RiffShare is a jukebox application that allows sharing with other users.

[0387] Platforms: Windows 95/98/ME, Windows NT, Windows 2000

[0388] RighteousMP3

[0389] RighteousMP3 is a Napster like program that compensates copyright holders for user's downloads and offers statistical information to the record labels, but is completely free for users.

[0390] Platforms: Windows 95/98/ME, Windows NT, Windows 2000, Unix, Macintosh

[0391] Scour Exchange

[0392] This software is currently being redesigned and made ‘legal’ with a new version on the way soon.

[0393] Platforms: Windows 95/98/ME, Windows NT, Windows 2000

[0394] Servent

[0395] Servent is a windows based tool with its own network and the ability to share all types of files.

[0396] Platforms: Windows 95/98/ME, Windows NT, Windows 2000

[0397] SongSpy

[0398] A peer-to-peer software tool with its own network and many Napster-like features, like a built-in mp3 player.

[0399] Platforms: Windows 95/98/ME, Windows NT, Windows 2000

[0400] Soulseek

[0401] Soulseek is a communication and file-sharing system. All activity in Soulseek revolves around a sophisticated chat rooms system that arranges rooms on a hierarchical topic tree, with the ability for new rooms to be created. It offers folder-based file sharing, which allows for more convenient browsing and downloading. It also offers fine-grained control over file sharing, with the ability to restrict access to a select list of users, as well as the ability to disallow access to specific users.

[0402] Platforms: Windows 95/98/ME, Windows NT, Windows 2000, Windows XP

[0403] Splooge

[0404] Splooge is a file-sharing tool for use over the Internet for people who have access to the Splooge central server. Users can share files of any type with anyone in the world as long as they have unrestricted use of the Internet.

[0405] Platforms: Windows 95/98/ME, Windows NT, Windows 2000, Unix

[0406] Swapnut

[0407] SwapNut's advanced features include upload limits, an extensive and well-established file sharing network and cross-platform compatibility.

[0408] Platforms: Windows 95/98/ME, Windows NT, Windows 2000, Unix

[0409] Tripnosis

[0410] Tripnosis allows users to share their files with others (restricted or worldwide) through the software and/or over the web. It has its own network and the ability to resume downloads.

[0411] Platforms: Windows 95/98/ME, Windows NT, Windows 2000

[0412] UdoRadio

[0413] UdoRadio was created by a small group of people that were generally dissatisfied with streaming and download audio sites on the web. Users program what they want to listen to and then UdoRadio streams the content to them.

[0414] Platforms: Unix, Web-based

[0415] WideSource

[0416] WideSource is an P2P search engine having its own network and many features

[0417] Platforms: Windows 95/98/ME, Windows NT, Windows 2000

[0418] Wippit

[0419] Wippit is one of the world's first legitimate p2p music subscription services with a wide range of recordings for users to download to their pc or media terminal. Also offered are mobile services and ring tones.

[0420] Platforms: Windows 95/98/ME, Windows NT, Windows 2000

[0421] File Sharing Clients

[0422] 2 Find MP3

[0423] 2 Find MP3 is another example MetaCrawler software that searches both http and ftp and verifies the results. It is compatible with most ftp software.

[0424] Platforms: Windows 95/98/ME, Windows NT, Windows 2000/XP

[0425] Abe's MP3 Finder

[0426] Abe's MP3 Finder searches Gnutella, Scour Exchange, and ftp servers simultaneously.

[0427] Platforms: Windows 95/98/ME, Windows NT, Windows 2000

[0428] Agent MP3

[0429] Agent MP3 is a tool to search for mp3's on Usenet.

[0430] Platforms: Windows 95/98/ME, Windows NT, Windows 2000

[0431] AudioGnome

[0432] AudioGnome is peer-to-peer client software that allows users to connect to multiple Napster based servers at the same time.

[0433] Platforms: Windows 95/98/ME

[0434] AudioLocator

[0435] AudioLocator searches for mp3's on ftp servers.

[0436] Platforms: Windows 95/98/ME, Windows NT, Windows 2000

[0437] BearShare

[0438] BearShare is a Windows file sharing built on Gnutella technology. BearShare provides a simple, easy to use interface combined with a powerful connection and search engine that puts thousands of different files in easy reach.

[0439] Platforms: Windows 95/98/ME, Windows NT, Windows 2000

[0440] Bodetella

[0441] A Gnutella client with features like Download Resume, Auto-Retry-Resume, Download Queuing, Queue and Throttling Auto Host File Update

[0442] Platforms: Windows 95/98/ME, Windows NT, Windows 2000

[0443] ComTry MP3 Downloader

[0444] ComTry MP3 Downloader helps user to find their favorite MP3 files on the Internet. It searches for the most reliable locations and lets users easily download the songs they chose.

[0445] Platforms: Windows 95/98/ME, Windows NT, Windows 2000

[0446] Espra

[0447] Espra's competitive edge over other file-sharing applications comprises its use of the 3rd generation network architecture, Freenet as the medium through which users share their files. Freenet uses a decentralized architecture and has no central point of failure.

[0448] Platforms: Windows 95/98/ME, Windows NT, Windows 2000, Unix

[0449] FileCat

[0450] FileCat is a Multimedia management and search tool with extra support for images and mp3's. It requires IE5.

[0451] Platforms: Windows 95/98/ME, Windows NT, Windows 2000, Unix

[0452] FileNavigator

[0453] Software that connects to the Opennap and Gnutella networks and allows for the download of any type of file. It also has the ability to resume downloads.

[0454] Platforms: Windows 95/98/ME, Windows NT, Windows 2000

[0455] Findsongs/Palavista

[0456] A MetaCrawling web-based search that looks to ftp servers for its results

[0457] Platforms: Web-based

[0458] FirstPeer

[0459] FirstPeer Transponder solves the problem of having to hunt for the people or the resources users are looking for. Rather than randomly connecting to the first available host on the Gnutella network, user can now connect to their friends and groups of users sharing similar interests. Instead of searching a large pool of resources, users are now able to refine their searches to those that match their interests with the use of groups.

[0460] Platforms: Java

[0461] Freegle

[0462] Freegle is a web-based search that is still under construction that searches Freenet.

[0463] Platforms: Unix, Web-based

[0464] Frost

[0465] Frost is a Java-based Freenet Client

[0466] Platforms: Unix, Java

[0467] Furi

[0468] Furi is a Gnutella protocol-compatible Java program that can participate in the Gnutella network. It is a full version program with an easy to use GUI interface that can perform most of the tasks of a Gnutella servant.

[0469] Platforms: Macintosh

[0470] Gnotella

[0471] Gnotella is clone of Gnutella, a distributed real time search and file-sharing program. Gnotella is for the Win32 environment, and offers extra benefits such as multiple searches, improved filtering/spam protection, bandwidth monitoring, enhanced statistics, upload throttling, and skinning, as well as more.

[0472] Platforms: Windows 95/98/ME, Windows NT, Windows 2000

[0473] Gnucleus

[0474] This is a Gnutella clone for windows with advanced features and security.

[0475] Platforms: Windows 95/98/ME, Windows NT, Windows 2000

[0476] Gnut

[0477] Gnut is a command-line client that implements the Gnutella protocol. It supports all features available in the original Nullsoft client, as well as many others. Bandwidth limiting, sorting of results, and regular expression searching are among the list. It compiles and runs on a wide range of POSIX compliant (and not so compliant) systems including: SunOS, Linux, FreeBSD, HP-UX, and Win32.

[0478] Platforms: Windows NT, Linux, Unix, and FreeBSD

[0479] Gnute

[0480] Gnute is a web based search engine that allows users to search the Internet for mp3s.

[0481] Platforms: Web-based

[0482] Grokster

[0483] Grokster is the latest generation of file sharing software. The Grokster generation of file sharing presents peer to peer, fast and detailed searches, no incomplete or failed downloads, auto resume, a fast network, file previews, and the downloading of any type of file. Grokster utilizes the same networks as Kazaa and Morpheus.

[0484] Platforms: Windows 95/98/ME, Windows NT, Windows 2000, Unix

[0485] GTK-Gnutella

[0486] GTK-Gnutella is a clone of Gnutella, which needs GTK+(1.2 or above). It is currently developed and tested under Linux (Debian 2.2). It is known to run at least on Linux and FreeBSD (on 80x86 machines). It is released under the GNU Public License (GPL).

[0487] Platforms: Linux, Unix, FreeBSD

[0488] Hagelslag

[0489] Hagelslag is an implementation of Gnutella. The main goals for this implementation are flexibility, stability, and performance. The development of Hagelslag was primarily aimed at i386 machines running Linux version 0.8. FreeBSD is supported as well

[0490] Platforms: Linux, FreeBSD

[0491] iAssimilator

[0492] The user is allowed to easily share any type of file—MP3s, Pictures, Games, Documents, etc. with other users on the Internet. It uses Gnutella and Napster networks.

[0493] Platforms: Windows 95/98/ME, Windows NT, Windows 2000

[0494] Iwan 's MP3 Finder

[0495] A freeware program enabling users to search up to ten mp3 search engines simultaneously, or display the results of up to four mp3 search engines on one screen.

[0496] Platforms: Windows 95/98/ME, Windows NT, Windows 2000

[0497] LimeWire

[0498] LimeWire is a multi-platform Gnutella client with features like auto-connect; browse host, multiple search, upload throttling, connection quality control, library management and sophisticated filtering.

[0499] Platforms: Windows 95/98/ME, Windows NT, Windows 2000, Macintosh, Java

[0500] Mactella

[0501] Mactella is the Mac version of Gnutella, an open-source file-sharing network that allows users to exchange an assortment of file formats with other users. It can operate on any port and has no centralized server. This program is capable of transferring any type of file that users put online, including ZIP, MPEG, ASF, MOV, QT, HQX, EXE, JAR, and SIT.

[0502] Platforms: Macintosh

[0503] Madster

[0504] Integrates with AOL Instant Messenger and allows users to search Napster, Gnutella, AOL, and MSN networks for files.

[0505] Platforms: Windows 95/98/ME, Windows NT, Windows 2000, Macintosh

[0506] MediaGrab!

[0507] MediaGrab! is used for finding and downloading media files from the web, Usenet, and more. Instead of using a web page search engine to search to find multimedia files, users can use MediaGrab! to locate files by subject, author, song name, band name, etc.

[0508] Platforms: Windows 95/98/ME, Windows NT, Windows 2000

[0509] MP3 Easy

[0510] MP3 Easy allows users to search for songs by title and artist and has functionalities like upload/download ratios.

[0511] Platforms: Windows 95/98/ME, Windows NT, Windows 2000, Unix

[0512] MP3 Groupie

[0513] MP3 Groupie is an mp3 searching application for locating mp3 files on Usenet.

[0514] Platforms: Windows 95/98/ME, Windows NT, Windows 2000

[0515] MP3 Rage

[0516] MP3 Rage is a file search application. The user can search for and download thousands of MP3's from the Internet using the Napster music sharing system and the Gnutella file sharing system, edit ID3 tags, analyze MP3's and adjust their sound volume automatically to play at similar levels, export MP3 files to AIFF format for burning CD's, play MP3 files, catalog, organize, rename, find, and change MP3 files and their ID3 tags.

[0517] Platforms: Macintosh

[0518] MP3Explorer

[0519] MP3 Explorer is a windows application that can search/play/download mp3 files from Mp3.com. Users can also transfer CD's to a mymp3.com account and manage their mp3.com play lists directly from within the program. Mp3.com stores hundreds of thousands of mp3 files grouped under different genres. Users can easily subscribe to mymp3.com directly from the program.

[0520] Platforms: Windows 95/98/ME, Windows NT, Windows 2000, Unix

[0521] NapAmp

[0522] NapAmp allows users to connect and download from Napster servers directly from Winamp. NapAmp doesn't support the “Alternative GET” mode yet, meaning that users cannot access Napster clients that are behind a firewall from NapAmp.

[0523] Platforms: Windows 95/98/ME, Windows NT, Windows 2000

[0524] Napigator

[0525] Generates a list of Napster-based networks that are online and how many users are present on the network. When users click on their choice, the Napster software is launched using the network/server selected.

[0526] Platforms: Windows 95/98/ME, Windows NT, Windows 2000

[0527] Napimx

[0528] Napimx is a program made to add Napigator servers into Winmx to have many searches in different servers at once. It has the following advantages: It processes IP addresses instead of server names so users do not have to wait for “resolving host names. It consumes much less RAM than Napigator application.

[0529] Platforms: Windows 95/98/ME, Windows NT, Windows 2000

[0530] Newtella

[0531] Newtella is the new way to share music over the Internet. It combines a focus on music, like Napster, with a decentralized network of users, and is based on the Gnutella protocol. The software is designed to retrieve and exchange only MP3 files. As such, it prevents the unrestricted duplication of viruses and self-executing Trojan horses. If also prevents illicit uses (such as child pornography) of the Gnutella network.

[0532] Platforms: Windows 95/98/ME, Windows NT, Windows 2000

[0533] N-Tella

[0534] N-Tella gives users the ability to get on the network and locate and download files. Utilizes quick and stable networking code with and object-orientated architecture.

[0535] Platforms: Windows 95/98/ME, Windows NT, Windows 2000

[0536] Ohaha

[0537] A file sharing tool that uses all the networks out there (Napster, Gnutella, etc.) and works completely decentralized. It is a plug-in that runs within IE5.

[0538] Platforms: Windows 95/98/ME, Windows NT, Windows 2000

[0539] SnarfZilla

[0540] Snarfzilla is a Napster-like client which operates over Freenet. Users can browse Freenet in an HTML browser, like Fproxy, but securely, without accessing the web in the browser. It differs from Napster and other peer-to-peer clients because of features like; Anonymity, no central server and being attack resistant.

[0541] Platforms: Windows 95/98/ME, Windows NT, Windows 2000, Linux, Unix, FreeBSD, Macintosh

[0542] SoundCrawler Sound Agent

[0543] This is an mp3 searcher with chat, IM, email, calendar and content integration Platforms: Windows 95/98/ME, Windows NT, Windows 2000

[0544] Swaptor

[0545] Swaptor connects to Gnutella, OpenNap, and FileNavigator. Supports all file types with bandwidth controls and the ability of resuming downloads.

[0546] Platforms: Windows 95/98/ME, Windows NT, Windows 2000, Unix

[0547] Toadnode

[0548] Toadnode is an extensible platform for peer-to-peer (P2P) networks. Its core functionality revolves around the ability to find, retrieve and distribute data among users across multiple networks. It includes an extensible application layer that makes it easy to plug in additional features. Toadnode uses the Gnutella network.

[0549] Platforms: Windows 95/98/ME, Windows NT, Windows 2000

[0550] WinMP3Locator

[0551] WinMP3Locator is a software based Meta crawler

[0552] Platforms: Windows 95/98/ME, Windows NT, Windows 2000

[0553] WinMp3Locator

[0554] WinMP3Locator searches for a song by the user-specified keywords in all popular MP3 search engines. WinMP3Locator can even search for a composition if the user does not know the author or is not sure about exact composition title.

[0555] Platforms: Windows 95/98/NE, Windows NT, Windows 2000

[0556] WinMX

[0557] WinMX is a free file-sharing program that allows users to simultaneously connect to many established networks based on the OpenNap and Napster protocols. WinMX also supports any file type.

[0558] Platforms: Windows 95/98/ME, Windows NT, Windows 2000, Unix. 

I claim:
 1. A method for determining popularity of a movie or song comprising the steps of: connecting a server to a user's computer having file trading software, via an internet connection; sending a request from the server to the user's computer, with the request asking for all files contained in one or more playlists associated with the user's computer; with the server receiving playlist data from the user's computer and recording the internet protocol address from the user's computer; storing the playlist data in a database; executing a query of the database to create frequency data indicative the frequency that a particular song or movie was present in a given playlist, to determine the popularity of a given song or movie; generating a report for multiple geographical areas based on the frequency data; delivering the report to a subscription based website.
 2. A method of delivering advertising content to a computer user comprising the steps of: storing advertising content in a database and assigning an identification number to each electronic file in the database; intercepting incoming music, movie, or software file requests and defining a Genre Demographic Radius for that file request, matching the Genre Demographic Radius with advertising content using Boolean logic, and electronically returning a demographically appropriate advertisement to the user. 